package com.desksoft.ecommerce.service.interf.mall;

import java.util.List;

import com.desksoft.ecommerce.util.result.ServiceResult;
import com.desksoft.ecommerce.vo.mall.BuyCartVO;
import com.desksoft.ecommerce.vo.mall.MallMessageVO;
import com.desksoft.ecommerce.vo.mall.ProductsInfo;
import com.desksoft.ecommerce.vo.mall.PromotionCartVO;
import com.desksoft.ecommerce.vo.mall.ShopBagVO;
import com.desksoft.ecommerce.vo.mall.StoreItemVO;
import com.desksoft.ecommerce.vo.mall.WholesalePriceVO;
import com.desksoft.utility.service.ServiceInterface;


public interface ICartShopService extends ServiceInterface{
       

	/**  
	* 处理单页，列表页，购物车结算加入购物车校验流程
	* @param 
	* @param 
	* @return
	*/
	public ServiceResult<MallMessageVO> gotoCartValidation(StoreItemVO storeItemVO);

	
	/**
	 * 获取购物车商品信息
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult<BuyCartVO>  doCsStoreItem (BuyCartVO buyCartVO,WholesalePriceVO whovo);
	
	/**
	 * 获取2c购物车商品信息
	 * @param buyCartVO
	 * @param whovo
	 * @return
	 */
	public ServiceResult<BuyCartVO>  doCs2cStoreItem (BuyCartVO buyCartVO,WholesalePriceVO whovo);
	
	
	/**
	 * 获取购物车促销信息(相互排斥的暂不展示)
	 * @param promotionCart
	 * @return
	 */
	public ServiceResult<PromotionCartVO> doCsPromotion (PromotionCartVO promotionCart);
	
	/**
	 * 购物车增减购买项
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult <BuyCartVO>  plusCsCartShop (BuyCartVO buyCartVO);
	
	/**
	 * 2c购物车增减购买项
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult <BuyCartVO>  plus2cCsCartshop (BuyCartVO buyCartVO);
	
	/**
	 * 购物车修改购物项
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult <BuyCartVO>  upCsCartShop (BuyCartVO buyCartVO);
	
	/**
	 * 2c购物车修改购物项
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult <BuyCartVO>  up2cCsCartShop (BuyCartVO buyCartVO);
	
	/**
	 * 删除指定购买项
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult <BuyCartVO>  remvoeCsCartShop (BuyCartVO buyCartVO);

	/**
	 * 删除多个指定购买项
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult <BuyCartVO>  remvoeCsCartShops (BuyCartVO buyCartVO);
	
	/**
	 * 删除所有购买项
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult <BuyCartVO>  remvoeAllCsCartShop (BuyCartVO buyCartVO);
	
	/**
	 * 购物车去结算时判断客户购买商品的定价方式
	 * 该方法兼容B2C和B2B
	 * @param buyCartVO
	 * @return 
	 */
	public ServiceResult <BuyCartVO> setPriceTypeCsCartShop (BuyCartVO buyCartVO,WholesalePriceVO whovo);
	
	/**
	 * 任选赠品选择生成促销
	 */
	
	public ServiceResult <PromotionCartVO> set2cPromotion (PromotionCartVO promotionCartVO);
	
	/**
	 * 删除指定促销项目
	 * @param promotionCartVO
	 * @return
	 */
	public ServiceResult <PromotionCartVO> del2cPromotion (PromotionCartVO promotionCartVO);
	
	/**
	 * 批量判断商品库存
	 * @param buyCartVO
	 * @param whovo
	 * @return
	 */
	public ServiceResult<Boolean> doStockOutBatch(BuyCartVO buyCartVO,WholesalePriceVO whovo);
	
	/**
	 * 返回购物车重新计算
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult<BuyCartVO> goCartBuyAgain(BuyCartVO buyCartVO);
	
	/**
	 * 单选后重新计算促销
	 * @param buyCartVO
	 * @return
	 */
	public ServiceResult<BuyCartVO> doCheckCartShop(BuyCartVO buyCartVO);
	
	/**
	 * 获取快速购物商品信息及价格
	 * @param priceVO
	 * @return
	 */
	public List<ProductsInfo> getWholeSalePriceServiceShopLite(WholesalePriceVO priceVO);
	
	/**  
	* 判断用户是否停止发货
	* @param 
	* @param 
	* @return
	*/
	public ServiceResult<MallMessageVO> gotoAbandondateValidation(StoreItemVO storeItemVO);
	/**  
	* 预定购买加入购物车
	* @param 
	* @param 
	* @return
	*/
	
	public ServiceResult<Boolean> insertShopBag(ShopBagVO shopBagVO);
}
